<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function fun(n, o) {
            console.log(o);
            return {
                fun: function (m) {
                    return fun(m, n);
                }
            };
        }
        // var b = fun(0).fun(1).fun(2).fun(3); // ? // 如果发现是一个链式调用，要拆开
        // var b1 = fun(0)  // undefined   // 如果看到 代码中 明显有 相同的单词，一定要先区分开 ,先根据语法，修改为不同的单词
        // var b2 = b1.fn(1) // 0   ---> fun(1,0)
        // var b3 = b2.fn(2) // ---> fun(2,1)   ---> 1
        // var b = b3.fn(3)  //  ---> fun(3,2)  ---> 2
        var c = fun(0).fun(1); //   undefined , 0
        // 现在c 是  fun(1,0)  的结果
        c.fun(2); // b2.fun(2) ---> fun(2,1)  --> 1
        c.fun(3); // b2.fun(3) ---> fun(3,1)  --> 1
    </script>
</body>

</html>